package com.payment.system.mapper;

import com.payment.common.annotation.DataSource;
import com.payment.common.enums.DataSourceType;
import com.payment.system.domain.ShoppingOrder;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 商城订单 数据层
 * 
 * @author payment
 * @date 2019-01-22
 */
public interface ShoppingOrderMapper 
{
	/**
     * 查询商城订单信息
     * 
     * @param id 商城订单ID
     * @return 商城订单信息
     */
	@DataSource(DataSourceType.SLAVE)
	public ShoppingOrder selectShoppingOrderById(String id);
	
	/**
     * 查询商城订单列表
     * 
     * @param shoppingOrder 商城订单信息
     * @return 商城订单集合
     */
	@DataSource(DataSourceType.SLAVE)
	public List<ShoppingOrder> selectShoppingOrderList(ShoppingOrder shoppingOrder);
	
	/**
     * 新增商城订单
     * 
     * @param shoppingOrder 商城订单信息
     * @return 结果
     */
	public int insertShoppingOrder(ShoppingOrder shoppingOrder);
	
	/**
     * 修改商城订单
     * 
     * @param shoppingOrder 商城订单信息
     * @return 结果
     */
	public int updateShoppingOrder(ShoppingOrder shoppingOrder);
	
	/**
     * 删除商城订单
     * 
     * @param id 商城订单ID
     * @return 结果
     */
	public int deleteShoppingOrderById(String id);
	
	/**
     * 批量删除商城订单
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
	public int deleteShoppingOrderByIds(String[] ids);

	//发货 修改订单状态
    int updateOrderStatusById(@Param("orderId") String orderId, @Param("status") String status);

	//app端  订单列表
	@DataSource(DataSourceType.SLAVE)
	List<ShoppingOrder> selectShoppingOrderListByMerchantId(@Param("merchantId") String merchantId, @Param("orderStatus") String orderStatus, @Param("num") Integer pageNum, @Param("size") Integer pageSize);

	//app端 查询用户购买过的升级商品订单  只查询交易成功的
	@DataSource(DataSourceType.SLAVE)
	List<ShoppingOrder> selectShoppingOrderListByMerchantIdAndPayType(@Param("merchantId") String merchantId, @Param("payType") String payType);

	//删除订单
	int updateOrderDelStatusByOrederId(@Param("orderId") String orderId);

	//通过订单编号查询
	@DataSource(DataSourceType.SLAVE)
    ShoppingOrder selectShoppingOrderByOrderNumner(@Param("orderNumber") String orderNumber);

	////根据商户id集合  查询购买1299的商户ids
	@DataSource(DataSourceType.SLAVE)
    String selectShoppingOrderByMerchantIds(@Param("merIds") String merIds);

	//通过订单类型和状态查询
	@DataSource(DataSourceType.SLAVE)
	List<ShoppingOrder>  selectShoppingOrderListByPayType(@Param("payType") String payType, @Param("orderStatus") String orderStatus);

	//统计交易笔数和交易金额
	@DataSource(DataSourceType.SLAVE)
    Map<String, Object> selectCountByWhere(ShoppingOrder shoppingOrder);
}